package com.letv.core.network.volley.listener;

import com.letv.core.bean.DataHull;
import com.letv.core.bean.LetvBaseBean;
import com.letv.core.network.volley.VolleyRequest;
import com.letv.core.network.volley.VolleyResponse.CacheResponseState;
import com.letv.core.network.volley.VolleyResponse.NetworkResponseState;

/**
 * 请求回调接口
 * 
 * @author zhuqiao
 * 
 */
public interface OnEntryResponse<T extends LetvBaseBean> {

    /**
     * 网络请求响应回调
     * 
     * @param request 对应的request
     * @param entry 数据实例对象
     * @param state 响应状态
     */
    void onNetworkResponse(VolleyRequest<T> request, T result, DataHull hull,
                           NetworkResponseState state);

    /**
     * 缓存请求响应回调
     * 
     * @param request 对应的request
     * @param entry 数据实例对象
     * @param state 响应状态
     */
    void onCacheResponse(VolleyRequest<T> request, T result, DataHull hull,
                         CacheResponseState state);

    /**
     * 错误码上报
     * 
     * @param request 对应的request
     * @param errorInfo 错误数据
     */
    // 是不是每个接口的错误码是一致的?如果是,那么在request里面自己实现；如果不是，那么安装这个回调给调用者自己上报
    void onErrorReport(VolleyRequest<T> request, String errorInfo);
}
